package com.niuke;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 5. MELON的难题 （按重量平分宝石，平分不了返回 -1）
 * 题目描述参考下面链接
 * https://alimama.blog.csdn.net/article/details/131280585
 */
public class NiukeMoni7nan {

    static int avg = 0;//
    static int[] tempNum = null;// 取到的数
    static int minCount = 0;
    static int nums[] = null;
    static int tempIndex[] = null;// 取了哪些索引

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = Integer.parseInt(scanner.nextLine());
        nums = new int[n];
        int allWeight = 0;
        for (int i = 0; i < n; i++) {
            nums[i] = scanner.nextInt();
            allWeight += nums[i];
        }

        if (allWeight % 2 == 0) {
            avg = allWeight / 2;
            tempNum = new int[n];
            tempIndex = new int[n];
            for (int i = 0; i < n; i++) {
                tempIndex[i] = -1;
            }
            minCount = n;
            dfs(0, 0); // 重点在这个递归，
            System.out.println(minCount);

        } else { // 不能均分输出 -1
            System.out.println("-1");
        }

    }

    public static void dfs(int p, int count) {
        System.out.println(p + " --- " + count);
        int tempSum = 0;
        for (int i = 0; i < count; i++) {
            tempSum += tempNum[i];
            if (tempSum == avg) {
                if (minCount > count) {
                    minCount = count;
                }
                break; // 这里只是 break 当前循环，递归不能断。
            }
            if (tempSum > avg) {
                // 超了
                return; // 这里是return，一开始就循环了 0 <= j < nums.length ，做了长度次的递归起始，return就是断掉其中的某次。
            }
        }
        for (int j = 0; j < nums.length; j++) {
            boolean flag = false;
            for (int k = 0; k <= count; k++) {
                if (tempIndex[k] == j) { // 如果取的下标里已经存在外围循环的下标，不再做递归。
                    flag = true;
                    break;
                }
            }
            if (!flag) {
                tempNum[count] = nums[j];
                System.out.println(Arrays.toString(tempNum));
                tempIndex[count] = j;
                System.out.println(Arrays.toString(tempIndex));
                dfs(p + 1, count + 1);
            }
        }
    }

}
